/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.japo.java.basics.samples;

import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.io.File;

/**
 *
 * @author Juan Jordán
 */
class GEV extends WindowAdapter{
    private final String F_BLOQUEO = "Instancia.lock";
    private IGU igu;
    GEV(IGU igu){
        this.igu = igu;
    }

    /* Todo los metodos o cosas que tratemos con ficheros
     * lo metemos en cuarentena entre un try y catch.
     */
    
    /*Metodos implementados a traves de WindowListener pero solo 
    * nos hemos quedado estos ocn WindowAdapter.
    */
    
    @Override
    public void windowOpened(WindowEvent we) {
        try{
            activarInstancia();
        }catch(Exception e){
            cerrarPrograma();
        }
    }

    @Override
    public void windowClosing(WindowEvent we) {
        try{
            desactivarInstancia();
        }catch(Exception e){
            cerrarPrograma();
        }
    }

//Metodos.
    private void cerrarPrograma() {
        igu.setVisible(false);//Hace el interfaz invisible.
        igu.dispose();//Libera todo los recursos graficos que utiliza el programa.
        System.exit(0);//0 es una condición que le dice al programa que todo ha ido bien.
    }//System.exit corta el hilo del main y cierra el programa.

    private void desactivarInstancia() throws Exception{
        File f = new File(F_BLOQUEO);
        
        boolean existeOK = f.exists();
        
        if(existeOK){
            f.delete();
        }else{
            throw new Exception("Problemas con la anulacion");
        }
    }

    private void activarInstancia() throws Exception {
        File f = new File(F_BLOQUEO);
        
        boolean existeOK = f.exists();
        
        if(!existeOK){
            f.createNewFile();
        }else{
            throw new Exception("Ya hay otra instancia");
        }
    }
}
